﻿#include<string>
#include<vector>
#include<iostream>
using namespace std;


//void test1()
//{
//	int& a = 1;//报错，字面常量1隐式类型转换成int的临时对象，且具有常性
//	const int& a = 1;//正确写法，加上const
//}
//
//
//int manin()
//{
//	test1();
//	return 0;
//}

struct Point
{
	int _x;
	int _y;
};
class Date
{
	public :
	Date(int year = 1, int month = 1, int day = 1)
		: _year(year)
		, _month(month)
		, _day(day)
	{
		cout << "Date(int year, int month, int day)" << endl;
	}
	Date(const Date& d)
		: _year(d._year)
		, _month(d._month)
		, _day(d._day)
	{
		cout << "Date(const Date& d)" << endl;
	}
private:
	int _year;
	int _month;
	int _day;
};


int main()
{
	// 这⾥本质是⽤{ 2025, 1, 1}构造⼀个Date临时对象
    // 临时对象再去拷⻉构造d1，编译器优化后合⼆为⼀变成{ 2025, 1, 1}直接构造初始化
	Date d1 = { 2025, 1, 1 }; 
	const Date& d2 = { 2024, 7, 25 };//这⾥d2引⽤的是{ 2024, 7, 25 }构造的临时对象
	return 0;
}